/**
 * 店铺验证器
 * 添加新的店铺验证分3步，请按下面的注释走【Step 1】、【Step 2】、【Step 3】
 * 【Step 1】 扩展1个新的json模板。
 * 【Step 2】 扩展1个新的验证函数，使用上面的json模板。
 * 【Step 3】 建立模板调用关系。
 */
function ShopValidator(shop) {
    this.shopId = shop.shopId;          // 店铺id
    this.shopName = shop.appKey;        // 店铺名称
    this.shopType = shop.shopType;      // 店铺类型
    this.shopKey = shop.appKey;         // 店铺授权的key
    this.shopSecret = shop.appSecret;   // 店铺授权的secret

    /**
     * 店铺设置，缺少的请在这里补充
     * 1、validateURL  店铺验证URL
     * 2、callbackURL  验证后的回调通知URL
     */
    this._shopSetting = {
        // 项目任务
        "淘宝" : {
            "validateURL" : "https://oauth.taobao.com/authorize?response_type=code&client_id={PARAM1}&redirect_uri={PARAM2}&state=1212&view=web",
            "callbackURL" : "${oms.address}shop/validated.action?appKey={PARAM1}&appSecret={PARAM2}"
        },
        "唯品会直发" : {
            "validateURL" : "https://auth.vip.com/oauth2/authorize?client_id=2f3b0bba&response_type=code&redirect_uri={PARAM1}",
            "callbackURL" : "${oms.address}authorization/authorizationVip/shopId/{PARAM1}.action"
        },
        "苏宁" : {
            "validateURL" : "https://open.suning.com/api/oauth/authorize?response_type=code&client_id=ee32c12e3d17638a8e2288848d480cc1&redirect_uri={PARAM1}",
            "callbackURL" : "${oms.address}/authorization/authorizationSuning/shopId/{PARAM1}.action&scope=item,price,catagory,order&state=1231414&itemcode=ruixueERP"
        } // TODO 【Step 1】在这里继续添加其它平台的验证和回调地址。
    };
    
    return this;
};

/**
 * 执行验证
 */
ShopValidator.prototype.validate = function() {
    if (!this.shopType) {
        return false;
    }
    switch(this.shopType) {
    case "淘宝":
        this._taobaoVerify();
        break;
    case "唯品会直发":
        this._vipVerify();
        break;
    case "唯品会直发":
        this._suningVerify();
        break; // TODO 【Step 3】新店铺验证函数对应到这里
    default :
        // 未知店铺类型，无法验证
        window.top.window.showModalAlert("未知店铺类型，无法验证。");
        return false;
    }
    return true;
};

/**
 * 淘宝店铺验证方法
 */
ShopValidator.prototype._taobaoVerify = function() {
    var validateURL = this._shopSetting[this.shopType].validateURL;
    var callbackURL = this._shopSetting[this.shopType].callbackURL;
    
    callbackURL = callbackURL.replace("{PARAM1}", this.shopKey);
    callbackURL = callbackURL.replace("{PARAM2}", this.shopSecret);
    
    validateURL = validateURL.replace("{PARAM1}", this.shopKey);
    validateURL = validateURL.replace("{PARAM2}", encodeURIComponent(callbackURL));
    window.open(validateURL);
}

/**
 * 唯品会店铺验证方法
 */
ShopValidator.prototype._vipVerify = function() {
    var validateURL = this._shopSetting[this.shopType].validateURL;
    var callbackURL = this._shopSetting[this.shopType].callbackURL;
    
    callbackURL = callbackURL.replace("{PARAM1}", this.shopId);
    
    validateURL = validateURL.replace("{PARAM1}", this.shopKey);
    validateURL = validateURL.replace("{PARAM2}", encodeURIComponent(callbackURL));
    window.open(validateURL);
}

/**
 * 苏宁店铺验证方法
 */
ShopValidator.prototype._suningVerify = function() {
    var validateURL = this._shopSetting[this.shopType].validateURL;
    var callbackURL = this._shopSetting[this.shopType].callbackURL;
    
    callbackURL = callbackURL.replace("{PARAM1}", this.shopId);
    
    validateURL = validateURL.replace("{PARAM1}", encodeURIComponent(callbackURL));
    window.open(validateURL);
}

// TODO 【Step 2】 参照上面函数，再加一个店铺验证url生成函数